using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using AccesoDatos;
using Entidades;

namespace Negocio.Negocio
{
    // Clase Negocio
    public class TipoEvento
    {
        #region Metodos publicos

        // Devuelve la lista de eventos
        public DataTable listaTipoEvento(String CodigoTipoEvento, String Descripcion,
            String Estado, String Sala, String TipoConfiguracion)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                // Seteo de valores para el criterio
                int iCriterio;
                if (CodigoTipoEvento == "" && Descripcion == "" && Estado == "" && Sala == "" && TipoConfiguracion == "")
                {
                    iCriterio = 0; // Valor por defecto para buscar a todos
                }
                else iCriterio = 1;

                String iCodigoTipoEvento = CodigoTipoEvento == "" ? "0" : CodigoTipoEvento;
                String iEstado = Estado == "" ? "0" : Estado;
                String iSala = Sala == "" ? "0" : Sala;
                String iTipoConfiguracion = TipoConfiguracion == "" ? "0" : TipoConfiguracion;

                Object[,] parmSP = { 
                    {"@iCriterio", SqlDbType.Int, 4, iCriterio},
                    {"@iCodigoTipoEvento", SqlDbType.Int, 4, Convert.ToInt32(iCodigoTipoEvento)},
                    {"@tDescripcionTipoEvento", SqlDbType.VarChar, 30, Descripcion},                  
                    {"@iEstadoTipoEvento", SqlDbType.Int, 4, Convert.ToInt32(iEstado)},
                    {"@iCodigoSala", SqlDbType.Int, 4, Convert.ToInt32(iSala)},
                    {"@iCodigoTipoConfiguracion", SqlDbType.Int, 4, Convert.ToInt32(iTipoConfiguracion)},
                                        
                };

                return oSql.ExecSPReturnDataTable(oRutGen.CadenaConexion(), "UP_VTA_SEL_tipoEvento", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("listaTipoEventos() - Negocio " + ex.Message);
            }
        }

        private int IIf(object p, string p_2, int p_3)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        // Inserta un Tipo de Evento
        public int insertaTipoEvento(Entidades.TipoEvento tipoEvento)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                Object[,] parmSP = { 
                    {"@tDescripcionTipoEvento", SqlDbType.VarChar, 30, tipoEvento.Descripcion},
                    {"@dFechaActivacion", SqlDbType.DateTime, 10, tipoEvento.FechaActivacion},
                    {"@dFechaInactivacion", SqlDbType.DateTime, 10, tipoEvento.FechaInactivacion},
                    {"@iEstadoTipoEvento", SqlDbType.Int, 4, tipoEvento.EstadoTipoEvento},
                    {"@iCodigoSala", SqlDbType.Int, 4, tipoEvento.CodigoDeSala},
                    {"@iCodigoTipoConfiguracion", SqlDbType.Int, 4, tipoEvento.CodigoTipoConfiguracion}
 
                };

                return (int)oSql.ExecSPReturnEscalar(oRutGen.CadenaConexion(), "UP_VTA_INS_tipoEvento", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("insertaTipoEvento() - " + ex.Message);
            }
        }

        // Actualiza un Tipo de Evento
        public int actualizaTipoEvento(Entidades.TipoEvento tipoEvento)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                Object[,] parmSP = { 
                    {"@iCodigoTipoEvento", SqlDbType.Int, 4, tipoEvento.CodigoTipoEvento},
                    {"@tDescripcionTipoEvento", SqlDbType.VarChar, 30, tipoEvento.Descripcion},
                    {"@dFechaActivacion", SqlDbType.DateTime, 10, tipoEvento.FechaActivacion},
                    {"@dFechaInactivacion", SqlDbType.DateTime, 10, tipoEvento.FechaInactivacion},
                    {"@iEstadoTipoEvento", SqlDbType.Int, 4, tipoEvento.EstadoTipoEvento},
                    {"@iCodigoSala", SqlDbType.Int, 4, tipoEvento.CodigoDeSala},
                    {"@iCodigoTipoConfiguracion", SqlDbType.Int, 4, tipoEvento.CodigoTipoConfiguracion}
                };

                return (int)oSql.ExecSPReturnEscalar(oRutGen.CadenaConexion(), "UP_VTA_UPD_tipoEvento", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("actualizaTipoEvento() - " + ex.Message);
            }
        }

        // Elimina un Tipo de Evento
        public int eliminaTipoEvento(Entidades.TipoEvento tipoEvento)
        {
            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                Object[,] parmSP = { 
                    {"@iCodigoTipoEvento", SqlDbType.Int, 4, tipoEvento.CodigoTipoEvento},
                    {"@iCodigoSala", SqlDbType.Int, 4, tipoEvento.CodigoDeSala}
                };

                return (int)oSql.ExecSPReturnEscalar(oRutGen.CadenaConexion(), "UP_VTA_DEL_TipoEvento", parmSP);
            }
            catch (Exception ex)
            {
                throw new Exception("eliminaTipoEvento() - " + ex.Message);
            }
        }

        public DataTable listaEstado()
        {

            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                return oSql.ExecSPReturnDataTable(oRutGen.CadenaConexion(), "UP_VTA_SEL_Estado");
            }
            catch (Exception ex)
            {
                throw new Exception("listaEstado() - " + ex.Message);
            }
        }

        public DataTable listaSala()
        {

            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                return oSql.ExecSPReturnDataTable(oRutGen.CadenaConexion(), "UP_VTA_SEL_SalaCombo");
            }
            catch (Exception ex)
            {
                throw new Exception("listaSala() - " + ex.Message);
            }
        }

        public DataTable listaTipoConfiguracion()
        {

            try
            {
                SqlHelper oSql = new SqlHelper();
                RutinasGenericas oRutGen = new RutinasGenericas();

                return oSql.ExecSPReturnDataTable(oRutGen.CadenaConexion(), "UP_VTA_SEL_TipoConfiguracionCombo");
            }
            catch (Exception ex)
            {
                throw new Exception("listaTipoConfiguracion() - " + ex.Message);
            }
        }

        #endregion
    }
}
